﻿using System;
using System.Windows.Forms;
using ProyectoSelva.Daos;
using EntitiesAndMappings.Entities;
using ProyectoSelva.Validate;

namespace ProyectoSelva.Forms.Operaciones
{
    public partial class FrmSeguimientoPersonal : Form,IValidateForm
    {
        public Boolean CerroSinAccion { get; set; }

        private Contrato contrato;

        private Boolean _valido;

        public FrmSeguimientoPersonal(Contrato contrato)
        {
            CerroSinAccion = false;
            InitializeComponent();
            _valido = true;
            this.contrato = contrato;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            _valido = true;
            errorProvider.Clear();
            var fechaIngresoCampo = datFechaIngresoCampo.Value.Date;
            var fechaSalidaCampo = datFechaSalidaCampo.Value.Date;
            if (fechaIngresoCampo>=fechaSalidaCampo)
            {
                errorProvider.SetError(datFechaIngresoCampo, @"La fecha de ingreso a campo debe ser menor que la fecha de salida");
                errorProvider.SetError(datFechaSalidaCampo, @"La fecha de salida a campo debe ser mayor que la fecha de ingreso");
         
            }
            else if (fechaIngresoCampo < contrato.FechaInicioContrato.Value.Date)
            {
                errorProvider.SetError(datFechaIngresoCampo, @"La fecha de ingreso a campo debe ser mayor o igual a la fecha de inicio de contrato");
            }
            else
            {
                ActionExecutor.Execute(this, delegate
                {
                    contrato.FechaIngresoCampo = fechaIngresoCampo;
                    contrato.FechaSalidaCampo = fechaSalidaCampo;
                    var contratoDao = new ContratoDAO();
                    contrato = contratoDao.Actualizar(contrato);
                });
                Close();
            }
        }
        
        private void FrmActualizarContrato_Load(object sender, EventArgs e)
        {
            lblCodigoPersonal.Text = contrato.Trabajador.Codigo;
            lblNombreCompleto.Text = contrato.Trabajador.ApellidosYNombres;
            lblEmpresa.Text = contrato.Empresa.Descripcion;
            lblProyecto.Text = contrato.Proyecto.Descripcion;
            lblLote.Text = contrato.Lote.Descripcion;
            lblCargo.Text = contrato.TipoCargo.Descripcion;
            lblEstatus.Text = contrato.StatusContrato.Descripcion;
            if (contrato.FechaIngresoCampo != null) 
                datFechaIngresoCampo.Value = contrato.FechaIngresoCampo.Value;
            if (contrato.FechaSalidaCampo != null) 
                datFechaSalidaCampo.Value = contrato.FechaSalidaCampo.Value;
        }
        
        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }

        private void FrmActualizarTrabajador_FormClosing(object sender, FormClosingEventArgs e)
        {
            CerroSinAccion = (contrato.Id==0);
        }

    }
}
